import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)
import request from '@/utils'
import { Dialog } from 'vant'
export default new Vuex.Store({
  state: {
    // tabs 数据
    tabs: [],
    // 书架
    book: []
  },
  getters: {
    // 搜索
    searchList(state) {
      // 返回函数
      return searchValue => {
        let list = []
        // 因为数据是双层结构  
        // 搜索的数据在第二层
        state.tabs.forEach(item => {
          // 在第二层使用filter
          // 
          let midList = item.children.filter(item => item.title.includes(searchValue))
          // 将每一次搜索的结果 组合成新的数组
          list = list.concat(midList)
        })
        return list
      }
    }
  },  
  mutations: {
    SET_TABS(state, payload) {
      state.tabs = payload
    },
    ADD_BOOK(state, payload) {
      const isExit = state.book.find(item => item.id === payload.id)

      if(isExit) {
        Dialog.alert({
          message: '已经加入书架， 无需再次加入',
          theme: 'round-button',
        }).then(() => {
          // on close
        });
      } else {
        state.book.push(payload)
        Dialog.alert({
          message: '加入成功',
          theme: 'round-button',
        }).then(() => {
          // on close
        });
      }

    }
  },
  actions: {
    async GET_TABS({ commit }) {
      const resp = await request({
        url: '/api/tabs'
      })

      commit('SET_TABS', resp.data.data)
    }
  },
  modules: {
  }
})
